package com.fortune.service.impl;

import com.fortune.common.paging.PagingData;
import com.fortune.dao.FindFhoneIsExistDao;
import com.fortune.dao.PUserMgtDao;
import com.fortune.dto.in.pUserMgt.PUserAddDto;
import com.fortune.dto.in.pUserMgt.PUserEditDto;
import com.fortune.dto.in.pUserMgt.PUserListDto;
import com.fortune.dto.in.pUserMgt.PUserLogableDto;
import com.fortune.entity.PPosition;
import com.fortune.service.PUserMgtService;
import com.fortune.vo.pUserMgt.PUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PUserMgtServiceImpl implements PUserMgtService {
    @Autowired
    private PUserMgtDao pUserMgtDao;
    @Autowired
    private FindFhoneIsExistDao findFhoneIsExistDao;

    /**
     * 员工列表
     * @param listDto
     * @return
     */
    @Override
    public PagingData<PUser> pagingData(PUserListDto listDto) {
        List<PUser> list = pUserMgtDao.list(listDto);
        int count = pUserMgtDao.count(listDto);
        PagingData<PUser> pagingData = new PagingData<>(list,count);
        return pagingData;
    }

    /**
     * 重置平台员工密码
     * @param userId
     * @return
     */
    @Override
    public int resetPassword(String userId) {
        return pUserMgtDao.resetPassword(userId);
    }

    /**
     * 设置平台员工是否允许登录
     * @param logableDto
     * @return
     */
    @Override
    public int setLogin(PUserLogableDto logableDto) {
        return pUserMgtDao.setLogin(logableDto);
    }

    /**
     * 删除平台员工
     * @param userId
     * @return
     */
    @Override
    public int delete(String userId) {
        return pUserMgtDao.delete(userId);
    }

    /**
     * 添加平台员工
     * @param addDto
     * @return
     */
    @Override
    public int addPUser(PUserAddDto addDto) {
        int checkPhone = pUserMgtDao.checkPhone(addDto);
        if(checkPhone>0)
            return 2;
        checkPhone =  findFhoneIsExistDao.findDuserFhoneIsExist(addDto.getPhone());
        if(checkPhone>0)
            return 2;
        checkPhone =  findFhoneIsExistDao.findMuserFhoneIsExist(addDto.getPhone());
        if(checkPhone>0)
            return 2;
        checkPhone =  findFhoneIsExistDao.findPphone(addDto.getPhone());
        if(checkPhone>0)
            return 2;
        int checkNumber = pUserMgtDao.checkNumber(addDto);
        if(checkNumber>0)
            return 3;
        int add = pUserMgtDao.addPUser(addDto);
        return add;
    }

    /**
     * 编辑平台员工
     * @param editDto
     * @return
     */
    @Override
    public int edit(PUserEditDto editDto) {
        int checkUser = pUserMgtDao.checkUser(editDto);
        if (checkUser==0) {
            return 2;
        }
        int num = pUserMgtDao.checkEditNumber(editDto.getUserId(),editDto.getNumber());
        if (num > 0){
            return 5;
        }
        int checkEditPhone = pUserMgtDao.checkEditPhone(editDto);
        if(checkEditPhone>0)
            return 3;
        checkEditPhone =  findFhoneIsExistDao.findDuserFhoneIsExist(editDto.getPhone());
        if(checkEditPhone>0)
            return 3;
        checkEditPhone =  findFhoneIsExistDao.findMuserFhoneIsExist(editDto.getPhone());
        if(checkEditPhone>0)
            return 3;
        int edit = pUserMgtDao.edit(editDto);
        return edit;
    }

    /**
     * 查看是否存在
     * @param userId
     * @return
     */
    @Override
    public int queryIsExist(String userId) {
        return pUserMgtDao.queryIsExist(userId);
    }

    /**
     * 平台岗位
     * @return
     */
    @Override
    public List<PPosition> queryPositionList() {
        return pUserMgtDao.queryPositionList();
    }
}
